package jmine.tec.hydra.domain.senderRegistry;

import javax.persistence.Column;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
import javax.persistence.Transient;

import jmine.tec.hydra.send.Sender;
import jmine.tec.hydra.send.impl.file.FileSender;
import jmine.tec.persist.annotation.DiscriminatorComment;

import org.hibernate.validator.NotNull;

import bancosys.tec.component.Documentation;

/**
 * Registro de dados para envio de arquivos.
 * 
 * @author piercio
 */
@Entity
@DiscriminatorValue(value = "2")
@DiscriminatorComment("REGISTRO PARA ARQUIVOS")
public class FileSenderRegistry extends AbstractSenderRegistry {

    private String extension;

    private String path;

    /**
     * @return a extensão do arquivo que será salvo.
     */
    @NotNull
    @Column(name = "FILE_EXTENSION")
    @Documentation("EXTENSÂO DO NOME DO ARQUIVO.")
    public String getExtension() {
        return this.extension;
    }

    /**
     * Define a extensão do arquivo que será salvo.
     * 
     * @param extension a extensão do arquivo que será salvo.
     */
    public void setExtension(String extension) {
        this.extension = extension;
    }

    /**
     * @return o caminho do arquivo que será salvo.
     */
    @NotNull
    @Column(name = "FILE_PATH")
    @Documentation("CAMINHO DE ESCRITA PARA O ARQUIVO.")
    public String getPath() {
        return this.path;
    }

    /**
     * Define o caminho do arquivo que será salvo.
     * 
     * @param path o caminho do arquivo que será salvo.
     */
    public void setPath(String path) {
        this.path = path;
    }

    /**
     * @return o sender que grava o xml resultante em um arquivo no diretorio passado.
     */
    @Override
    @Transient
    public Sender getSender() {
        return new FileSender(this);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public String toString() {
        return "FileSenderRegistry: " + this.path + " - " + this.extension;
    }
}
